﻿import os
import time
from typing import Tuple, Union

from config.constants import Constants


def isDevicesConnected() -> Union[Tuple[bool, str], bool]:
    """
    注意：只能连接一个设备，否则返回的是第一个连接设备时数据不可靠
    adb devices 结果信息：
        List of devices attached
        29336e5b	device
    :return: 返回设备连接结果，若有设备连接则返回设备连接信息，如：29336e5b
    """
    shell = 'adb devices '
    print("执行 adb devices，获取设备连接列表！")
    result = os.popen(shell)
    for line in result.readlines():
        print(line)
        if (not ('attached' in line)) and 'device' in line:
            device_name = line.split()[0]
            print("获取到已连接设备: %s " % device_name)
            return True, device_name
    print("---未检测到已连接设备---")
    return False


def getConnectedDeviceName() -> str:
    """
    获取设备名称
    :return:设备名称
    """
    is_connected, device_name = isDevicesConnected()
    if is_connected:
        return device_name
    return Constants.EMPTY_RESULT


def restartADBServer():
    """
    重启adb服务
    :return:
    """
    print("开始重启adb服务>>>")
    os.system('adb kill-server')
    time.sleep(Constants.CMD_COMMAND_INTERNAL)
    os.system('adb start-server')
    time.sleep(Constants.CMD_COMMAND_INTERNAL)
    print("重启adb服务完成<<<")
